package com.zenithmind.article.service;

import com.zenithmind.article.pojo.dto.ArticleTagDTO;
import com.zenithmind.article.pojo.vo.ArticleVO;

import java.util.List;

/**
 * 文章标签关联服务接口
 * 遵循接口隔离原则：专门处理文章标签关联操作
 * 遵循单一职责原则：只负责文章和标签的关联管理
 */
public interface ArticleTagAssociationService {

    /**
     * 为文章绑定标签
     * 
     * @param articleTagDTO 文章标签DTO
     * @return 文章VO
     */
    ArticleVO bindTags(ArticleTagDTO articleTagDTO);

    /**
     * 为文章添加分类
     * 
     * @param articleId 文章ID
     * @param categoryId 分类ID
     * @return 文章VO
     */
    ArticleVO addCategory(String articleId, String categoryId);

    /**
     * 移除文章标签
     * 
     * @param articleId 文章ID
     * @param tagIds 标签ID列表
     * @return 是否成功
     */
    Boolean removeTags(String articleId, List<String> tagIds);

    /**
     * 更新文章分类
     * 
     * @param articleId 文章ID
     * @param categoryId 新分类ID
     * @return 是否成功
     */
    Boolean updateCategory(String articleId, String categoryId);

    /**
     * 获取文章的所有标签
     * 
     * @param articleId 文章ID
     * @return 标签列表
     */
    List<String> getArticleTags(String articleId);

    /**
     * 批量更新文章标签
     * 
     * @param articleId 文章ID
     * @param tagIds 新的标签ID列表
     * @return 是否成功
     */
    Boolean updateTags(String articleId, List<String> tagIds);
}
